1
붉은 별에서의 동시성
AI017Lesson 8
00:00

붉은 별에서의 동시성은 시스템이 멈추지 않도록 로버 탐사, 생명 신호 원격 감시, 인공위성 연결과 같은 여러 독립적인 작업을 관리하는 기술입니다. 고에서는 독립적으로 실행되는 작업 이라고 불립니다 고루틴입니다.

1. 비결정성 원칙

다른 고루틴 내에서의 작업은 어떤 순서로든 실행될 수 있다라고 가정하는 것이 가장 좋습니다. 고 런타임은 사용 가능한 코어에 따라 작업을 스케줄링하기 때문에, 명시적 동기화 없이는 한 로버가 스캔을 완료한 후 다른 로버가 전송을 시작한다는 것을 보장할 수 없습니다.

go printGopher(c) // 새로운 독립 작업을 시작합니다

2. 동기화 메커니즘

이러한 작업을 관리하기 위해 고는 두 가지 주요 도구를 제공합니다:

  • 상호 배제: 고루틴은 뮤텍스 를 사용해 동시에 어떤 작업을 수행하는 것을 차단할 수 있습니다.
  • select 문: 각 케이스가 채널 수신 또는 전송을 담고 있는 스위치 문처럼 보입니다. select 하나의 케이스가 준비될 때까지 기다린 후 실행합니다.
고퍼 매니저(경비복 & 클립보드)SELECT로버 알파로버 베타

3. 워커 구조체

장시간 실행되는 워커는 일반적으로 무한 루프와 함께 select 여러 통신 채널을 동시에 모니터링하기 위해 사용합니다:

func worker() {
for {
select {
// 여기서 채널 대기를 합니다.
}
}
}
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>